home *** CD-ROM | disk | FTP | other *** search
/ Programming Windows 95 with MFC / Programming Windows 95 with MFC (Microsoft Programming Series)(097-0001465)(1996).iso / CODE / Chap11 / MyWord / MyWordView.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-05  |  3.8 KB  |  155 lines

  1. //***********************************************************************
  2. //
  3. //  MyWordView.cpp
  4. //
  5. //***********************************************************************
  6.  
  7. #include <afxwin.h>
  8. #include <afxcmn.h>
  9. #include <afxrich.h>
  10. #include "Resource.h"
  11. #include "StyleBar.h"
  12. #include "MainFrame.h"
  13. #include "MyWordView.h"
  14.  
  15. IMPLEMENT_DYNCREATE (CWordView, CRichEditView)
  16.  
  17. BEGIN_MESSAGE_MAP (CWordView, CRichEditView)
  18.     ON_COMMAND (ID_CHAR_BOLD, OnCharBold)
  19.     ON_COMMAND (ID_CHAR_ITALIC, OnCharItalic)
  20.     ON_COMMAND (ID_CHAR_UNDERLINE, OnCharUnderline)
  21.     ON_COMMAND (ID_PARA_LEFT, OnParaLeft)
  22.     ON_COMMAND (ID_PARA_CENTER, OnParaCenter)
  23.     ON_COMMAND (ID_PARA_RIGHT, OnParaRight)
  24.     ON_UPDATE_COMMAND_UI (ID_CHAR_BOLD, OnUpdateCharBoldUI)
  25.     ON_UPDATE_COMMAND_UI (ID_CHAR_ITALIC, OnUpdateCharItalicUI)
  26.     ON_UPDATE_COMMAND_UI (ID_CHAR_UNDERLINE, OnUpdateCharUnderlineUI)
  27.     ON_UPDATE_COMMAND_UI (ID_PARA_LEFT, OnUpdateParaLeftUI)
  28.     ON_UPDATE_COMMAND_UI (ID_PARA_CENTER, OnUpdateParaCenterUI)
  29.     ON_UPDATE_COMMAND_UI (ID_PARA_RIGHT, OnUpdateParaRightUI)
  30.     ON_UPDATE_COMMAND_UI (ID_INDICATOR_LINE, OnUpdateLineNumber)
  31. END_MESSAGE_MAP ()
  32.  
  33. void CWordView::OnCharBold ()
  34. {
  35.     CHARFORMAT cf;
  36.     cf = GetCharFormatSelection ();
  37.  
  38.     if (!(cf.dwMask & CFM_BOLD) || !(cf.dwEffects & CFE_BOLD))
  39.         cf.dwEffects = CFE_BOLD;
  40.     else
  41.         cf.dwEffects = 0;
  42.  
  43.     cf.dwMask = CFM_BOLD;
  44.     SetCharFormat (cf);
  45. }
  46.  
  47. void CWordView::OnCharItalic ()
  48. {
  49.     CHARFORMAT cf;
  50.     cf = GetCharFormatSelection ();
  51.  
  52.     if (!(cf.dwMask & CFM_ITALIC) || !(cf.dwEffects & CFE_ITALIC))
  53.         cf.dwEffects = CFE_ITALIC;
  54.     else
  55.         cf.dwEffects = 0;
  56.  
  57.     cf.dwMask = CFM_ITALIC;
  58.     SetCharFormat (cf);
  59. }
  60.  
  61. void CWordView::OnCharUnderline ()
  62. {
  63.     CHARFORMAT cf;
  64.     cf = GetCharFormatSelection ();
  65.  
  66.     if (!(cf.dwMask & CFM_UNDERLINE) || !(cf.dwEffects & CFE_UNDERLINE))
  67.         cf.dwEffects = CFE_UNDERLINE;
  68.     else
  69.         cf.dwEffects = 0;
  70.  
  71.     cf.dwMask = CFM_UNDERLINE;
  72.     SetCharFormat (cf);
  73. }
  74.  
  75. void CWordView::OnParaLeft ()
  76. {
  77.     OnParaAlign (PFA_LEFT);
  78. }
  79.  
  80. void CWordView::OnParaCenter ()
  81. {
  82.     OnParaAlign (PFA_CENTER);
  83. }
  84.  
  85. void CWordView::OnParaRight ()
  86. {
  87.     OnParaAlign (PFA_RIGHT);
  88. }
  89.  
  90. void CWordView::OnUpdateCharBoldUI (CCmdUI* pCmdUI)
  91. {
  92.     OnUpdateCharEffect (pCmdUI, CFM_BOLD, CFE_BOLD);
  93. }
  94.  
  95. void CWordView::OnUpdateCharItalicUI (CCmdUI* pCmdUI)
  96. {
  97.     OnUpdateCharEffect (pCmdUI, CFM_ITALIC, CFE_ITALIC);
  98. }
  99.  
  100. void CWordView::OnUpdateCharUnderlineUI (CCmdUI* pCmdUI)
  101. {
  102.     OnUpdateCharEffect (pCmdUI, CFM_UNDERLINE, CFE_UNDERLINE);
  103. }
  104.  
  105. void CWordView::OnUpdateParaLeftUI (CCmdUI* pCmdUI)
  106. {
  107.     OnUpdateParaAlign (pCmdUI, PFA_LEFT);
  108. }
  109.  
  110. void CWordView::OnUpdateParaCenterUI (CCmdUI* pCmdUI)
  111. {
  112.     OnUpdateParaAlign (pCmdUI, PFA_CENTER);
  113. }
  114.  
  115. void CWordView::OnUpdateParaRightUI (CCmdUI* pCmdUI)
  116. {
  117.     OnUpdateParaAlign (pCmdUI, PFA_RIGHT);
  118. }
  119.  
  120. void CWordView::OnUpdateLineNumber (CCmdUI* pCmdUI)
  121. {
  122.     int nLine = GetRichEditCtrl ().LineFromChar (-1) + 1;
  123.  
  124.     CString string;
  125.     string.Format ("Line %d", nLine);
  126.     pCmdUI->Enable (TRUE);
  127.     pCmdUI->SetText (string);
  128. }
  129.  
  130. void CWordView::ChangeFont (LPCSTR pszFaceName)
  131. {
  132.     CHARFORMAT cf;
  133.     cf.cbSize = sizeof (CHARFORMAT);
  134.     cf.dwMask = CFM_FACE;
  135.     ::lstrcpy (cf.szFaceName, pszFaceName);
  136.     SetCharFormat (cf);
  137. }
  138.  
  139. void CWordView::ChangeFontSize (int nSize)
  140. {
  141.     CHARFORMAT cf;
  142.     cf.cbSize = sizeof (CHARFORMAT);
  143.     cf.dwMask = CFM_SIZE;
  144.     cf.yHeight = nSize;
  145.     SetCharFormat (cf);
  146. }
  147.  
  148. void CWordView::GetFontInfo (LPSTR pszFaceName, int& nSize)
  149. {
  150.     CHARFORMAT cf = GetCharFormatSelection ();
  151.     ::lstrcpy (pszFaceName, cf.dwMask & CFM_FACE ? cf.szFaceName : "");
  152.     nSize = cf.dwMask & CFM_SIZE ? cf.yHeight : -1; 
  153. }
  154.  
  155.